/**
 * Redux 中间件
 * 
 *   中间件的定义：
 *       1. 普通函数
          function exampleMiddleware(storeAPI) {
            return function wrapDispatch(next) {
              return function handleAction(action) {
                // 在这里做任何事情：用 next(action) 向前传递 action，
                // 或者使用 storeAPI.dispatch(action) 重启管线
                // 这里也可以使用 storeAPI.getState()

                return next(action)
              }
            }
          }
              1. exampleMiddleware 就是中间件，它会收到到一个 storeAPI 的参数，该参数是一个对象，里面有 {dispatch, getState}
              2. 第二层这个函数 wrapDispatch ,它接受一个 next 参数，是个函数，它的作用是调用流程中的下一个中间件函数，如果当前中间件是流程中的最后一个中间件，next 调用的化，则会走到 reducer 里面去。
              3. handleAction 处理动作，它接受一个 action 参数，就是 dispatch 调用时传递过来的 action 动作对象
                注意，最后需要调用 next(action)

        2. 箭头函数
          const exampleMiddleare = (storeAPI) => (next) =>  (action) => {
            // ....
          }
 * 
 *   中间件的使用：
 * 
 *      通过 applyMiddleare() 应用中间件
 * 
 *      语法：
 *        applyMiddleare(midd1, midd2, midd3)
 *      
 *      使用在 createStore(reducer, applyMiddleare(midd1, midd2, midd3)) 第二个参数
 */

import Hello from "./components/Hello";

export default function App() {
  return (
    <div>
      <h1>App</h1>
      <hr />
      <Hello />
    </div>
  );
}
